local love = require 'love'

local new = love.graphics.newFont
local set = love.graphics.setFont
local get = love.graphics.getFont

local fontCache = {}

local function setFont(fontSize)
    if fontSize == nil then return end
    -- 默认字体支持中文和花色符号的字体字体
    local fontPath = "assets/n.otf" -- NotoSansCJK-Regular
    -- 文字高宽比例为 3:2, 数字高宽比例为 2:1, 空格高宽比例为 36:5

    local key = fontPath .. "_" .. fontSize  -- 唯一标识
    if not fontCache[key] then
        -- 仅在缓存中不存在时创建
        fontCache[key] = new(fontPath, fontSize)
    end

    set(fontCache[key])
end

local function setChineseFont(fontSize)
    if fontSize == nil then return end
    local fontPath = "assets/k.ttf" -- 昆明海鸥体

    local key = fontPath .. "_" .. fontSize
    if not fontCache[key] then
        -- 仅在缓存中不存在时创建
        fontCache[key] = new(fontPath, fontSize)
    end

    set(fontCache[key])
end

local function getFontWidth(text)
    return get():getWidth(text)
end

local function getFontHeight()
    return get():getHeight()
end

return{
    setFont = setFont,
    setChineseFont = setChineseFont,
    getFontWidth = getFontWidth,
    getFontHeight = getFontHeight
}